package beans.factory;
import beans.BeansException;

/**
 * @Author: Take-off
 * @Description: //TODO 工厂：获取Bean
 * @Date: 9:59 AM 2022/12/12
 **/
public interface BeanFactory {
    /**
     * @Author: Take-off
     * @Description: //TODO 返回Bean 的实例对象
     * @Date: 10:01 AM 2022/12/12
     * @Param: [name]
     * @return: java.lang.Object
     **/
    Object getBean(String name) throws BeansException;


    Object getBean(String name,Object... args) throws BeansException;

    /**
     * 返回指定泛型的对象
     * @param name  要检索的bean的名称
     * @param requiredType 类型
     * @param <T>          泛型
     * @return             实例化的 Bean 对象
     * @throws BeansException 不能获取 Bean 对象，则抛出异常
     */
    <T> T getBean(String name, Class<T> requiredType) throws BeansException;
}
